#ifndef _CSAVELOADSTATE_H_
#define _CSAVELOADSTATE_H_

#include "IGameState.h"

class CSaveLoadState : public IGameState
{
private:
	int						m_nCurrentSelection;
	int						m_nCursorID;
	int						m_nBackgroundImageID;

	std::vector<char>		m_vSaveOneName;
	std::vector<char>		m_vSaveTwoName;
	std::vector<char>		m_vSaveThreeName;

	// Saved and loaded values
	int m_nScore;
	char m_cNameOne[128];
	char m_cNameTwo[128];
	char m_cNameThree[128];

	int m_nCurrState; // Are we saving or loading?
	int m_nCurrRoom;
	bool m_bLoaded; // Did the user load a profile?

	CSaveLoadState(void);
	CSaveLoadState& operator=(const CSaveLoadState&);
	~CSaveLoadState(void);
	CSaveLoadState(const CSaveLoadState&);

public:
	enum roomNames { OFFICE, SECURITY, SNACK, SEC_CONTROL, 
		MAIN_CONTROL, POD, MAXROOMS };

	enum menuState { SAVE, LOAD };

	int GetCurrState() { return m_nCurrState; }
	void SetCurrState(int nCurrState) { m_nCurrState = nCurrState; }
	bool GetLoaded() { return m_bLoaded; }
	void SetLoaded(bool bLoaded) { m_bLoaded = bLoaded; }

	// Saving and loading
	bool Save(const char* szXmlFileName);
	bool Load(const char* szXmlFileName);

	void Enter(void);
	bool Input(void);
	void Update(float fElapsedTime);
	void Render(void);
	void Exit(void);

	static CSaveLoadState* GetInstance();
};

#endif